#ifndef STRAY_GRAPHICS_INDEX_BUFFER_H
#define STRAY_GRAPHICS_INDEX_BUFFER_H

#include "../Object/ReferenceObject.h"
#include "../SmartPtr/IntrusivePtr.h"
#include "Format.h"
#include "LockFlag.h"

namespace Stray {
namespace Core {
namespace Graphics {

class IndexBuffer : public Stray::ReferenceObject
{
public:
	virtual ~IndexBuffer(){};

	virtual size_t getSize() const = 0;
	virtual IndexBufferFormat getFormat() const = 0;
	virtual void* lock(Stray::Core::Graphics::LockFlag flag = Stray::Core::Graphics::LF_READWRITE) = 0;
	virtual void unlock() = 0;
	virtual void writeData(void* pData, Stray::Uint32 pSize) = 0;

	virtual void* getNativeHandle() const = 0;
};

typedef Stray::IntrusivePtr<IndexBuffer>::type IndexBufferPtr;

}
}
}

#endif